let mysql = require("mysql")
let pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'zhixin',

})

function dosql(sql, params = []) {
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, connection) {
            if (err) {
                reject(err)
            }
            connection.query(sql, params, function (error, results, fields) {
                // 将链接返回到连接池中，准备由其他人重复使用
                connection.release()
                if (error) {
                    reject(error)
                }
                resolve(results)
            })
        })
    })
}

function getData(data, total) {
    return JSON.stringify({
        success: true,
        code: 20000,
        msg: '数据请求成功',
        data: data,
        total: total
    })
}

function addData(data) {
    return JSON.stringify({
        success: true,
        code: 20000,
        message: '数据新增成功',
        data: data
    })
}

function updateData(data) {
    return JSON.stringify({
        success: true,
        code: 20000,
        msg: "数据修改成功",
        data: data
    })
}

function deleteData(data) {
    return JSON.stringify({
        success: true,
        code: 20000,
        msg: "数据删除成功",
        data: data
    })
}

function hand(data, total) {
    // console.log(data);
    return JSON.stringify({
        success: true,
        code: 20000,
        message: '数据请求成功',
        data: data,
        total: total
    })
}

exports.dosql = dosql
exports.updateData = updateData
exports.getData = getData
exports.deleteData = deleteData
exports.addData = addData
exports.hand = hand



//（1）创建连接池 createPool方法
// var pool = mysql.createPool(optioins);
// options参数包含createConnection方法中可以使用的各种属性，除此之外还有以下属性：createConnection，waitForConnections，connectionLimit，queueLimit。

//（2）从连接池中取出连接。getConnection方法。如无连接可用则隐式的建立一个数据库连接。
// pool.getConnection(function (err, connection))
// 回调函数中的err为错误对象，connection为获取到的连接对象。

//（3）当连接不再使用时，用connection对象的release方法将其归还到连接池中。
// connection.release();

//（4）当一个连接不再需要使用且需要从连接池中移除时，用connection对象的destroy方法。
// connection.destroy();
// 连接移除后，连接池中的连接数减一。

//（5）当一个连接池不再需要使用时，用连接池对象的end方法关闭连接池。
// pool.end();